For many software applications, and Software as a Service (“SaaS”) applications in particular, the ability to customize the applications is very important Customers rarely use the application as it comes “out of the box”. Instead, customers will tailor the application for their particular needs, including business needs, look and feel needs, particular business processes, etc.
With some known SaaS implementations, customers have separate environments. For example, SaaS applications from Salesforce.com Inc. use both a sandbox test environment and a production/publish environment to perform customizations and publish them to all users. One problem with this approach is a new separate environment is required for each sandbox. Each environment is expensive and requires separate maintenance.
With some other known SaaS implementations, sandbox coverage is only available for certain forms of customizations and configurations. For example, MetaData Service (“MDS”) from Oracle Corp. provides an MDS sandbox for only those customizations that use MDS as a metadata store. However, there are other customizations and configurations that customers can perform that do not directly use MDS as a metadata store, and in tum, cannot use MDS sandboxing. Changes to these objects may be directly written into the database and become immediately active for all users.